home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
007
/
boss_c.arc
/
BOSS.DOC
next >
Wrap
Text File
|
1987-06-04
|
75KB
|
2,971 lines
The Window BOSS
by Phil Mongelluzzo
Revision: 06.04.87
Star Guidance Consulting
273 Windy Drive
Waterbury, Connecticut 06705
(203) 574-2449
Copyright (c) 1984, 1985, 1986, 1987 by Philip A. Mongelluzzo
All Rights Reserved.
The Window BOSS Shareware diskette, containing a copy of this
manual may be freely copied and shared, but printed copies of
this document may not be copied in any way without permission in
writing from Star Guidance Consulting. Thank you.
The Window BOSS
1. Introduction
The Window BOSS is one of the most powerful and cost-effective
products available to enhance and accelerate the development of
system and applications programs in the "C" language. The BOSS
will let you create programs that have the same look and feel as
top sellers like Lotus 1-2-3, Sidekick, dBASE III, and Framework!
Pop-up windows, pull down menus, status lines, and in context on-
line help functions can be easily implemented. Your applications
can drag windows around the screen and automatically sense the
video card installed. All of this without snow, flicker, or
delay!
Registered users can take advantage of our "Source Plus" policy
that provides meticulously commented source code and one year of
free updates.
2. Technical Nitty Gritties
The Window BOSS supports PC/MSDOS for the IBM PC/XT/AT and
compatibles. However, you'll need one of the following
compilers in order to take advantage of the state-of-the-art
techniques available from the BOSS:
Lattice C, Microsoft C,
Borland Turbo C,
Computer Innovations CI86, Datalight
The BOSS is written in "C" and assembly language. You'll need
the Microsoft Assembler, MASM, to assemble any local changes to
the assembler source.
Stats:
Maximum windows: limited only by compiler and memory
Maximum window: full screen
Minimum window: 1 row 1 column (borderless)
3 rows 3 columns (framed)
Operation:
Simply include the library at link time and invoke the
function desired.
Page: 1
The Window BOSS
3. User Supported Software
Star Guidance Consulting distributes The Window BOSS with a
unique marketing approach called Shareware. The Shareware
diskette with the programs and manual may be freely copied and
shared. It is also available from Star Guidance for $15.00 to
cover the diskette, postage and handling. We ask you to help us
distribute The Window BOSS by sharing unmodified copies of the
Shareware diskette with others. We also encourage you to
register your copy for $50.00. You'll find a registration form
at the end of this manual. Thank you for your support and enjoy
the BOSS.
3.1. Registering
Shareware is a term for software that can be freely copied and
shared. The term describes copyrighted software which the author
supports and encourages people to copy and share.
Shareware is like public television: the programming is freely
distributed, but support from users is encouraged. The concept
is based on these principles:
1. People need to try programs to see if they are useful.
2. Software authors can be supported directly by users.
3. Copying and networking of programs can be encouraged.
We encourage you to register your copy of The Window BOSS for
$50.00. Registration has a number of benefits to you:
1. Serialized diskette containing all source code for all
supported compilers.
2. Telephone Support (you pay phone charges) and free updates
for 1 year.
3. Thanks from us for your support and encouragement!
You will find a registration form at the end of this document.
Page: 2
The Window BOSS
3.2. The SHAREWARE Distribution Diskette
The SHAREWARE diskette should contain the following files:
ARCE.DOC <- Archive utility document
ARCE.EXE <- Archive utility
BOSS.ARC <- The Window BOSS distribution archive.
BOSS.DOC <- You are reading it
BOSS.TOC <- Table of contents for manual
Contents of BOSS.ARC:
BOSSDEMO.C <- Source to BOSSSDEMO
BOSSDEMO.EXE <- DEMO Program
C86.BAT <- Compiler Driver - CI86
DLC.BAT <- Compiler Driver - Datalight
MSC3.BAT <- Compiler Driver - Microsoft 3
MSC4.BAT <- Compiler Driver - Microsoft 4
LCS2 <- Compiler Driver - Lattice 2.XX
LCS3 <- Compiler Driver - Lattice 3.XX
TCS <- Compiler Driver - Turbo C (TCC)
GENINDEX.C <- Source to GENINDEX (CI86)
HELLO.C <- The classic....
HELP.C <- Help system source
INTELC.HLP <- Demo DATA file
INTELC.NDX <- Index to Demo DATA file
LOADC86.BAT <- Link Batch file - CI86
LOADDLC.BAT <- Link Batch file - Datalight
LOADLC2.BAT <- Link Batch file - Lattice 2.XX
LOADLC3.BAT <- Link Batch file - Lattice 3.XX
LOADMS3.BAT <- Link Batch file - Microsoft 3
LOADMS4.BAT <- Link Batch file - Microsoft 4
LOADTC.BAT <- Tlink Batch file - Turbo C
PEEK.C <- Peek for Microsoft (Turbo C)
POPUP.C <- Popup menu source
SC86.LIB <- Small memory library - CI86
SDLC.LIB <- Small memory library - Datalight
SLAT2.LIB <- Small memory library - Lattice 2.XX
SLAT3.LIB <- Small memory library - Lattice 3.XX
SMSC3.LIB <- Small memory library - Microsoft 3.0
SMSC4.LIB <- Small memory library - Microsoft 4.0
STC.LIB <- Small memory library - Turbo C 1.X
WINDOWS.FNS <- Type Checking INCLUDE file - Microsoft
WINDOWS.H <- BOSS INCLUDE file
Page: 3
The Window BOSS
3.3. The SOURCE Distribution Diskette
The SOURCE diskette(s) should contain the following files:
ARCE.DOC <- Documentation for ARC.EXE
ARCE.EXE <- Archive utility
ASMFILES.ARC <- Source to all assembler modules
C86.ARC <- Computer Innovations specific files
CFILES.ARC <- Source to all "C" modules
DLC.ARC <- Datalight specific files
DOC.ARC <- Latest documentation
FILES.LST <- List of the ARChive file contents
HELLO.C <- The classic
LC2.ARC <- Lattice Ver 2.XX specific files
LC3.ARC <- Lattice Ver 3.XX specific files
MS3.ARC <- Microsoft Ver 3.00 specific files
MS4.ARC <- Microsoft Ver 4.00 specific files
TC1.ARC <- Borland Turbo C 1.XX specific files
READ.ME <- READ THIS - Last minute notes
REV.LEV <- Revision level
Contents of ASMFILES.ARC (ASM Source Files)
DLVLIB.ASM <- ASM routines for Datalight
MSVLIB.ASM <- ASM routines for Microsoft & Borland
VLIB.ASM <- ASM routines for Lattice & CI86
Contents of C86.ARC (Computer Innovations Specific Files)
ASMALL.BAT <- Small model assembler driver
ALARGE.BAT <- Large model assembler driver
CC.BAT <- Small model compiler driver
CCBIG.BAT <- Large model compiler driver
EPILOGUE.H <- ASM include file
LCOMPILE.BAT <- Large model - compile *.c
LOADC86.BAT <- Link driver for BOSSDEMO
LWIN.LIB <- Large model library
MAKELIB.BAT <- Builds LIB file from OBJ(s)
MODEL.H <- ASM include file
PROLOGUE.H <- ASM include file
SCOMPILE.BAT <- Small model - compile *.c
SWIN.LIB <- Small model library
Page: 4
The Window BOSS
The SOURCE Distribution Diskette - continued.
Contents of CFILES.ARC (C Source Files)
BOSSDEMO.C <- BOSSDEMO Source
GENINDEX.C <- GENINDEX Source
HELP.C <- Help function source
PEEK.C <- PEEK for MSC (Turbo C)
POPUP.C <- Popup menu source
SCANCODE.C <- Quickie to display KB scancodes
WINDOWS.FNS <- Function protype header file
WINDOWS.C \
WINDOWS.H \
WN_ACTIV.C \
WN_BOXSE.C \
WN_CLOSE.C \
WN_CLR.C \
WN_COLOR.C \
WN_DBORD.C \
WN_DELRO.C \
WN_DMA.C \
WN_SCROL.C |
WN_FIXCS.C | The Window BOSS C
WN_GETS.C | level source code and
WN_INSRO.C | include file.
WN_LOCAT.C |
WN_MOVE.C |
WN_NATRI.C |
WN_OPEN.C /
WN_PRINT.C /
WN_PUTS.C /
WN_RESTO.C /
WN_SAVE.C /
WN_SUP.C /
WN_SYNC.C /
WN_TITLE.C /
WN_WRAP.C /
WPRINTF.C /
Contents of DOC.ARC (Documentation)
WINDOWS.MAN <- Reference Manual (This Document)
WINDOWS.TOC <- Table of Contents for manual
Page: 5
The Window BOSS
The SOURCE Distribution Diskette - continued.
Contents of LC2.ARC (Lattice & Microsoft Ver 2.XX Specific)
ASMALL.BAT <- Small model assembler driver
ALARGE.BAT <- Large model assembler driver
LCOMPILE.BAT <- Large model - compile *.c
LCS.BAT <- Small model compiler driver
LCL.BAT <- Large model compiler driver
LOADLC.BAT <- Link driver for BOSSDEMO
LWIN.LIB <- Large model library
MAKELIB.BAT <- Build LIB file from OBJ(s)
MAKELIB.CMD <- Data file for MAKELIB.BAT
SCOMPILE.BAT <- Small model - compile *.c
SWIN.LIB <- Small model library
Contents of LC3.ARC (Lattice Ver 3.XX Specific Files)
ASMALL.BAT <- Small model assembler driver
ALARGE.BAT <- Large model assembler driver
LCOMPILE.BAT <- Large model - compile *.c
LCS.BAT <- Small model compiler driver
LCL.BAT <- Large model compiler driver
LOADLC.BAT <- Link driver for BOSSDEMO
LWIN.LIB <- Large model library
MAKELIB.BAT <- Build LIB file from OBJ(s)
MAKELIB.CMD <- Data file for MAKELIB.BAT
SCOMPILE.BAT <- Small model - compile *.c
SWIN.LIB <- Small model library
Contents of MS3.ARC (Microsoft Ver 3.00 Specific Files)
ASMALL.BAT <- Small model assembler driver
ALARGE.BAT <- Large model assembler driver
LCOMPILE.BAT <- Large model - compile *.c
LOADMS.BAT <- Link driver for BOSSDEMO
LWIN.LIB <- Large model library
MAKELIB.BAT <- Build LIB file from OBJ(s)
MAKELIB.CMD <- Data file for MAKELIB.BAT
MCCL.BAT <- Large model compiler driver
MCCS.BAT <- Small model compiler driver
SCOMPILE.BAT <- Small model - compile *.c
SWIN.LIB <- Small model library
Page: 6
The Window BOSS
The SOURCE Distribution Diskette - continued.
Contents of MS4.ARC (Microsoft Ver 4.00 Specific Files)
ASMALL.BAT <- Small model assembler driver
ALARGE.BAT <- Large model assembler driver
LCOMPILE.BAT <- Large model - compile *.c
LOADMS.BAT <- Link driver for BOSSDEMO
LWIN.LIB <- Large model library
MAKELIB.BAT <- Build LIB from OBJ(s)
MAKELIB.CMD <- Data file for MAKELIB.BAT
MCCL.BAT <- Large model compiler driver
MCCS.BAT <- Small model compiler driver
SCOMPILE.BAT <- Small model - compile *.c
SWIN.LIB <- Small model library
Contents of DLC.ARC (Datalight Specific)
ASMALL.BAT <- Small model assembler driver
ALARGE.BAT <- Large model assembler driver
CCS.BAT <- Small model compiler driver
CCL.BAT <- Large model compiler driver
LCOMPILE.BAT <- Large model - compile *.c
LOADDLC.BAT <- Link driver for BOSSDEMO
LWIN.LIB <- Large model library
MAKELIB.BAT <- Build LIB from OBJ(s)
MAKELIB.CMD <- Data file for MAKELIB.BAT
SCOMPILE.BAT <- Small model - compile *.c
SWIN.LIB <- Small model library
Contents of TC1.ARC (Borland Turbo C Specific)
ALARGE.BAT <- Large model assembler driver
ASMALL.BAT <- Small model assembler driver
BOSSDEMO.PRJ <- TC Project file for BOSSDEMO
LCOMPILE.BAT <- TCC - Large model - compile *.c
LOADTC.BAT <- Tlink driver for BOSSDEMO
LWIN.LIB <- Large model library
MAKELIB.BAT <- Build LIB from OBJ(s)
MAKELIB.CMD <- Data file for MAKELIB.BAT
SCOMPILE.BAT <- TCC - Small model - compile *.c
SWIN.LIB <- Small model library
TCCL.BAT <- Large model TCC compiler driver
TCCS.BAT <- Small model TCC compiler driver
Page: 7
The Window BOSS
4. Installation/Compiling/Linking
4.1. Installation
By the numbers:
1) MAKE A BACKUP!!!
2) Shareware diskette - Use ARCE to unarchive the various
ARCE files. You will need around 280k of free disk
space for all the files.
Source Code diskette - Use ARCE to unarchive
CFILES.ARC, ASMFILES.ARC, and DOC.ARC. Then, depending
upon the compiler you intend to use, unarchive only
ONE of the following: LC2.ARC, LC3.ARC, MS3.ARC,
MS4.ARC, DLC.ARC, C86.ARC, TC1.ARC
3) Copy the LIBrary that corresponds to the compiler you
are using onto the disk(s) you usually use with your
"C" compiler. The LIB file should be on the same
disk(s) that the "C" runtime libraries are on. Be
sure that the small model library is named "SWIN.LIB".
The large model library should be named "LWIN.LIB".
4) Copy (or rename) the compiler driver batch file that
corresponds to the compiler you are using to:
CSM.BAT
5) Remember there is no magic to using The Window BOSS.
Its simple!!
4.2. Compiling
Compile your source code in the following manner:
C>csm hello
** ALL compilers should be invoked with the compiler driver
batch file supplied with The Window BOSS. This insures that
the compiler specific command line parameters are specified
correctly. Alternatively, you can edit "windows.h" and
"windows.c" to define the compiler specific equate that
applies to your compiler. Note - "windows.c" is included on
the source distribution diskette only.
Page: 8
The Window BOSS
Installation/Compiling/Linking - continued.
4.3. Linking
Simply specify the ?WIN.LIB file that corresponds to the
compiler/memory model you are using. Don't forget to
include your compilers runtime library as well. The
following examples should demonstrate the ease of linking.
Lattice
link c+hello,hello,,swin+lcm+lc
Computer Innovations
link hello,hello,,swin+c86s2s
Datalight
link c+hello,hello,hello,swin+nl
Microsoft
link hello,hello,,swin+slibc
Borland
tlink /c c0s hello,hello,hello,swin emu maths cs
Page: 9
The Window BOSS
4.4. Sample program (hello.c)
#include "windows.h"
main()
{
WINDOWPTR w1; /* window handle */
int batrib; /* border atrib */
int watrib; /* window atrib */
/*
* Set attributes:
*
* border - blue/white box
* window - white background/black letters
*
*/
batrib = v_setatr(BLUE,WHITE,0,0);
watrib = v_setatr(WHITE,BLACK,0,0);
/*
* Open window at 0,0 - 15 cells wide and 3 cells high
*/
w1 = wn_open(0,0,0,15,3,watrib,batrib);
if(!w1) exit();
/*
* Print the famous string and wait for key to be struck.
* Close window on key strike.. exit.
*/
wn_printf(w1,"Hello World...");
v_getch();
wn_close(w1);
}
/* End */
Page: 10
The Window BOSS
5. General Notes
Genindex, Help, and Popup are support programs and functions for
the BOSSDEMO program. They can, however, serve as valuable aids
to you in the creation of help screens and popup menus. The code
is provided to demonstrate how the functions in The Window BOSS
can be used to create online help screens and popup windows.
Both the C and assembly functions make very heavy use of
pointers. The code contains numerous checks to ensure that
memory outside of that in use by the program is not corrupted.
If you attempt to do something that would cause memory to be
corrupted an error message will appear and your program will
exit. This message will usually say that a bad handle was passed
to some function. You can, if you wish, remove this check by
modifying the "wns_err" function in the wn_sup.c file.
Generally speaking, the members of the window control block
(refer to windows.h) should not be modified unless you are
familiar with how they are used by the various functions.
Although the routines appear to support the multi page
capabilities of the IBM Color Card, actual support of this
feature has not been implemented. Invoking the functions with
references to video pages other than 0 might produce interesting
but undesired results.
If you are upgrading from a previous version of The Window BOSS
be sure to re-compile and re-link your application. This will
eliminate the possibility of any "unusual" errors due to changes
that may have been made to either the functions or the window
control block structure.
Several global symbols are used by the various functions:
int wn_dmaflg;
int wn_sbit;
int wn_blank;
wn_dmaflg when TRUE enables direct writes into video ram.
This is the default setting and should work in all cases.
Setting wn_dmaflg to FALSE will disable these direct writes.
When wn_dmaflg is FALSE the BIOS video routines are used.
This results in slower screen updates. However, this method
does have the advantage of being considered "well behaved"
by IBM's Topview, Microsoft's Windows, and DESQ.
wn_sbit controls the window refresh rate on systems with
color cards. When set to SLOW (defined in windows.h) window
displays will appear to be painted on the screen rather than
flash displayed. This is the default value. Setting wn_sbit
to FAST enables flash displays. Artistic use of wn_sbit can
give your application that extra visual touch. Experiment!
Page: 11
The Window BOSS
General Notes - continued.
wn_blank controls how window moves and tiled window updates
occur on systems that are equipped with color cards. Its
setting determines whether or not the video image should be
shut off when a window is moved or a when a window other
than the top window is referenced or activated. TRUE causes
the video to be disabled during these activities. This is
the default value. A value of FALSE allows these updates to
occur in full view. Again, artistic use of wn_blank can
give your application that extra visual touch. From a
practical standpoint, wn_blank=FALSE should be used when
manipulating small windows.
From a performance standpoint, the fastest (flicker & snow free)
screen updates will occur with wn_dmaflg=TRUE, wn_sbit=FAST, and
wn_blank=FALSE. The key words here are flicker and snow free.
Scrolling speed can be increased with, a proportional increase in
flicker (perhaps), by using wn_scroll() function to set the
scrolling method for the window to BIOS. This technique will
provide the fastest screen updates and scrolling on color
systems.
Several of the compilers support a compile time command line
parameter that results in structures being byte aligned instead
of word aligned. In all cases, the default (i.e. no command line
parameter) option was used to compile the modules in the various
libraries.
Borland Turbo C users who prefer "The Integrated Environment"
over the "Command-Line Version" MUST define the symbol
"BORLAND=1". (Select Options, Compiler, Defines and enter
"BORLAND=1" in the dialogue box without quotes and in upper case.
Programs such as Wordstar and Lotus change the video mode when
they run. If your system is equipped with a color monitor and
your windows are appearing in black and white issue a call to
v_smode to set the video mode to 3. Alternatively, you can use
the "MODE CO80" command at DOS level before you run your
application.
PLEASE - Pass along your comments. The Window BOSS is your tool.
If, heaven forbid, you find any logic errors let us know. We are
committed to making The Window BOSS the best price performer
available. Call, write, or if you prefer, you can reach Phil
Mongelluzzo via CompuServe [71565,1001]. Fido fans can leave mail
on our support BBS at (203)-271-1579. There is no reason to sit,
steam, or complain to those who can not provide any real form of
support. Lastly, if you use The Window BOSS, register your copy.
The Shareware System will only work if you support it!
Page: 12
The Window BOSS
6. Making Changes
First, be sure that you are familiar with the existing
conventions and compiler specific feature test switches. You
can refer to the various BATch files for specific examples of
compiler specific defines etc. With the exception of the ASM
files, compiler and memory model specific feature test
switches are specified on the command line. The ASM files
require a few specific instructions:
Editing:
Computer Innovations, Lattice, and Microsoft 2.XX
1) vlib.asm Set LATTICE to 1 for Lattice and Microsoft 2.XX
Set LATTICE to 0 for Computer Innovations.
2) model.h CI86 only - Set "SMALL" & "LARGE"
See MODEL.H for discussion.
Microsoft 3.00 & 4.00, Borland Turbo C
1) msvlib.asm Set LDATA & LPROG to TRUE or FALSE
LDATA is TRUE for LARGE DATA
LPROG is TRUE for LARGE CODE
Assemble using:
MASM /MX MSVLIB;
Datalight
1) dos.mac Edit to reflect memory model.
Additionally, MACROS.ASM must be present.
Please note that we assume that you have installed your compiler
exactly as suggested in the compiler's manual. This includes
suggested sub-directories, PATH specifiers, and environment
setup. Creating code that compiles under numerous compilers is
not an easy task. If you run into problems review your compilers
documentation and browse through the batch files provided. If
you still have problems - call! The most common problem occurs
with Lattice - make sure you have the correct DOS.MAC and that
your PATH has been specified correctly.
The distribution libraries were created on an IBMPC/AT under DOS
3.2 using Lattice (Lifeboat) 2.15E, Lattice 3.10, Microsoft 3.00,
Microsoft 4.0, Borland Turbo C 1.0, and Datalight 2.12. Marion
was used to create the LIB files for CI86. Microsoft's LIB was
used for the Microsoft variants and Datalight. Lattice libraries
were created with the library managers shipped with the
respective versions of the compiler.
Page: 13
The Window BOSS
Making Changes - continued.
Depending upon the compiler being used, several warning errors
will be generated. Warnings created by the unmodified
distribution code can be safely ignored - all others should be
investigated.
A note of caution... PC/MS-DOS Version 2.XX's LINK can complain
if you build a new library that takes advantage of later LINK
enhancements. If this occurs, you can (1) upgrade to DOS 3.1++
or, (2) get a librarian that isn't so smart!! We suggest going
to the later rev of DOS.
If you have need of a model specific library that is not part of
the distribution either create it yourself or drop us a note and
we will ship one to you. We can no longer distribute ALL library
models for ALL compilers and still keep everything on a single
diskette. We regret any inconvenience that this causes but
the compiler vendors seem to be having a field day with memory
models. Any comments you have on the subject are welcomed.
Page: 14
The Window BOSS
7. Tiled Windows
The Window BOSS fully supports the concept of tiled or
overlapping windows. That is to say that you can have several
windows on the screen at the same time and freely access any one
of them without having to be concerned with the order in which
they were opened or whether or not any other windows overlap the
one you wish to access. The Window BOSS employs the "most
recently used is active" concept. This concept is based on the
following:
. The last window referenced is the current active
window.
. The current active window is always the top window
tile.
For example, let us assume that you have opened three overlapping
windows in the following order; w1, w2, w3. w3 is considered to
be the top window tile because it was the last window referenced.
If you now reference, or explicitly activate, w2 The Window BOSS
will automatically adjust the screen image to insure that w2 is
now the top window tile with w3 and w1 being partially hidden by
w2.
Before After
+----------+ +----------+
| W1 | | W1 |
| +----------+ | +----------+
| | W2 | | | W2 |
| | +------------+ | | |----+
| | | W3 | | | | W3 |
| | | | | | | |
| | +------------+ | | |----+
| | | | | |
| +----------+ | +----------+
| | | |
+----------+ +----------+
It is extremely important to keep in mind that The Window BOSS
will automatically activate (bring to the top) the window being
referenced. Keep your screen layouts attractive and uncluttered.
This will minimize window thrashing which is both annoying and
time consuming.
Page: 15
The Window BOSS
8. Future Directions
The Window BOSS will continue to be enhanced. In fact, The BOSS
is about to hire a clerk to assist with data entry! The addition
of The DATA CLERK to The Window BOSS's organization should assist
those who have the need for more formal data validation routines
and input field formatting. Naturally, we will keep things
simple, consistent, and easy to use. Time permitting, The DATA
CLERK should be on staff by mid year (July 1987).
Support for Microsoft 2.XX, Lattice 2.XX, and Microsoft 3.0 will
be dropped as soon as all registered users have ceased to
use these versions. If you are using any of these compilers
you should either upgrade or purchase the latest release.
9. Functions
The Window BOSS's functions fall into two major groups, those
that manipulate windows and those that deal with the video or
keyboard interface at a relatively low level. All window
manipulation functions being with the prefix "wn_" as in
"wn_open", while all video and keyboard based functions begin
with "v_" or "_" as in "v_getch" and "_putch". This convention
makes it easy to remember where to look when you want to do
something. Additionally, there are several global functions
which which begin with "wns_". These functions, although visible
to the outside world, are used internally by The Window BOSS.
The Window BOSS has been tested on the IBMPC/XT/AT and 3270 PC
equipped with monochrome, CGA, and EGA video boards. All
functions with the exception of v_style(), which does not do well
on the EGA and 3270 PC, work as specified.
Several functions require an attribute byte. The attribute byte
contains background specific data in the upper 4 bits and
foreground specific data in the lower 4 bits. Color and bit
definitions can be found in windows.h. You can use a statement of
the form: atrib = ((BLUE << 4) | WHITE); to set the attribute to
the correct form. The preceding example would result in a BLUE
background with WHITE characters. The macro v_setatr in
windows.h can also be used.
Page: 16
The Window BOSS
9.1. wn_open -- open window
USAGE
wn = (WINDOWPTR)wn_open(page, row, col, width, height, atrib, batrib)
int page, row, col, width, height, atrib, batrib;
page - 0 ,1000, or 800.
1000 opens a borderless page
800 opens an exploding window
row - row of upper left hand corner of the window
col - column of upper left hand corner of the window
width - INSIDE dimension (max value is 78, 80 if page = 1000)
height- INSIDE dimension (max value is 23, 25 if page = 1000)
atrib - attribute to be used IN the window
batrib- attribute to be used for the border
wn_open is usually the first function called to create and use
a window. wn_open dynamically allocates memory to save the
area defined by row, col, width, and height - saves the image,
opens the window and homes the logical cursor to row 0, col 0
of the window. The window is now ready to be used by the
various window management routines.
Attributes are defined in windows.h.
RETURNS
wn = window handle or NULL if error
CAUTIONS
Width and height are inside dimensions. If you want a window
with a work area of 10 rows and 5 columns, the width is 7 and
the height is 12.
The flashing cursor will not be displayed unless wn_sync() has
been called with a value of TRUE.
The window "wn" automatically becomes the top window tile upon
return.
Page: 17
The Window BOSS
9.2. wn_title -- title window
USAGE
wn_title(wn,title)
WINDOWPTR wn;
char *title;
wn - window handle
title - string pointer to title
The title is displayed on the top border of the window using
the currently defined border attribute. The cursor is
positioned off the screen after the title is written.
RETURNS
TRUE if all is well, NULL if the title is to large to fit on
the top border or errror.
CAUTIONS
The window "wn" automatically becomes the top window tile upon
return.
9.3. wn_titla -- title window with attribute
USAGE
wn_titla(wn,title,atrib)
WINDOWPTR wn;
char *title;
int atrib;
wn - window handle
title - string pointer to title
atrib - attribute to use for text
The title is displayed on the top border of the window using
the attribute specified by atrib. The cursor is positioned off
the screen after the title is written.
RETURNS
TRUE if all is well, NULL if the title is to large to fit on
the top border or error.
CAUTIONS
The window "wn" automatically becomes the top window tile upon
return.
Page: 18
The Window BOSS
9.4. wn_close -- close window
USAGE
wn_close(wn)
WINDOWPTR wn;
wn - handle of a previously opened window.
wn_close removes the window specified by wn and restores the
screen area under the window to its previous contents. The
memory allocated by wn_open is returned to the free list. The
cursor is positioned to where it was located prior to the
wn_open call.
RETURNS
TRUE or NULL if error
CAUTIONS
None.
9.5. wn_save -- save screen image
USAGE
wn = (WINDOWPTR)wn_save(page, row, col, width, height)
int page, row, col, width, height;
page - always 0.
row - row of upper left hand corner of the window
col - column of upper left hand corner of the window
width - INSIDE dimension (max value is 78)
height- INSIDE dimension (max value is 23)
wn_save can be used to save areas of the screen for purposes
other than windows.
Memory for the screen image is dynamically allocated.
RETURNS
wn = window handle or NULL if error
CAUTIONS
The window handle returned by wn_save should only be used with
wn_restore, use with other routines could produce unpredictable
results.
Page: 19
The Window BOSS
9.6. wn_restore -- restore saved screen image
USAGE
wn_restore(wn)
WINDOWPTR wn;
wn - handle of previously wn_save(ed) window.
Restores the screen image corresponding to the window handle
wn, allocated memory is returned to the free list.
RETURNS
TRUE or NULL if error
CAUTIONS
This function should only be used with window handles obtained
from wn_save.
9.7. wn_move -- move window
USAGE
wn = (WINDOWPTR)wn_move(wn,row,col)
wn - handle of window to be moved
row - destination row
col - destination column
Moves the window corresponding to wn to a new location. The
cursor is positioned off the screen after the call.
RETURNS
Window handle of the window moved or NULL if error.
CAUTIONS
The window "wn" automatically becomes the top window tile upon
return.
Page: 20
The Window BOSS
9.8. wn_locate -- locate cursor in window
USAGE
wn_locate(wn, row, col)
WINDOWPTR wn;
int row, col;
wn - window handle
row - row to position to (relative to window origin)
col - column to position to (relative to window origin)
Position the cursor to the row and column specified. Row and
Column values are relative to the origin of the window (0,0
locates the cursor in the upper left hand corner of the window
referenced by wn).
RETURNS
TRUE or NULL if error
CAUTIONS
Values of row & col are not checked.
The window "wn" automatically becomes the top window tile upon
return.
Page: 21
The Window BOSS
9.9. wn_printf -- window printf
USAGE
wn_printf(wn, cs, args)
WINDOWPTR wn;
char *cs;
?? arg1 ... argn;
wn - window handle
cs - format control string
args - argument list
printf function for windows!
RETURNS
TRUE or NULL if error
CAUTIONS
Output string length is limited to 254 bytes.
Registered users can, of course, edit the wn_printf function
set the limit to whatever they wish.
Integer only for Microsoft 3.0. This limitation
be overcome by using sprintf in conjunction with wn_printf.
For example:
char buf[256];
..
..
sprintf(buf,"%d %l %x\n", intval, longval, hexval);
wn_printf(wn, buf);
Full support in Microsoft 4.0, Lattice, CI86, and Datalight.
The window "wn" automatically becomes the top window tile upon
return.
Page: 22
The Window BOSS
9.10. wn_puts -- put string (high speed)
USAGE
wn_puts(wn, row, col, string)
WINDOWPTR wn;
int row, col;
char *string;
wn - window handle
row - row to print the string at
col - column to print the string at
string- the string to print
Row and Col are relative to the origin of the window.
The cursor is displayed only if wn_synflg has been called with
a value of TRUE.
RETURNS
TRUE or NULL if error
CAUTIONS
wn_puts writes the string directly to the video ram. Tabs, line
feeds, carriage returns and other control characters are not
filtered or processed in any way.
Range checks are not performed to insure the specified string
can be contained in the window.
The window "wn" automatically becomes the top window tile upon
return.
Page: 23
The Window BOSS
9.11. wn_gets -- get string with validation
USAGE
(char *) wn_gets(wn, buf, va, uva)
WINDOWPTR wn;
char *buf;
int va;
char *uva;
wn - window handle
buf - user buffer for string
va - input validation to be used
uva - user validation list [optional]
va specifies the type of input validation to be performed as
data is being entered. Options are:
(1) none no restrictions - accept everything
(2) integer accept: 0 thru 9 + -
(3) floating point accept: 0 thru 9 + - .
(4) alpha only accept: a thru z (upper & lower case)
(5) upper case only accept: A thru Z
(6) validation list accept: only those characters
(optional) specified in the uva string.
ORing va with 0x8000 disables data entry character echo.
The following editing functions are supported:
. backspace & rubout do the logical things
. ^U, ^X, and ^C wipe the field clean
. Return and Esc end the input function
Data entry takes place at the current logical cursor location.
You can, of course, position the cursor to where you wish
prior to calling wn_gets.
Example:
wn_printf(wn,"Enter your name > ");
wn_get(wn,buf,4,0);
RETURNS
Pointer to buf or NULL if error
CAUTIONS
The window "wn" automatically becomes the top window tile upon
return.
Page: 24
The Window BOSS
9.12. wn_putsa -- put string and attribute (high speed)
USAGE
wn_putsa(wn, row, col, string, atrib)
WINDOWPTR wn;
int row, col;
char *string;
int atrib;
wn - window handle
row - row to print the string at
col - column to print the string at
string- the string to print
atrib - attribute to be used with string
Row and Col are relative to the origin of the window.
The cursor is displayed only if wn_synflg has been called with
a value of TRUE.
RETURNS
TRUE or NULL if error
CAUTIONS
wn_puts writes the string directly to the video ram. Tabs, line
feeds, carriage returns and other control characters are not
filtered or processed in any way.
Range checks are not performed to insure the specified string
can be contained in the window.
The window "wn" automatically becomes the top window tile upon
return.
Page: 25
The Window BOSS
9.13. wn_insrow -- insert row in window
USAGE
wn_insrow(wn, row)
WINDOWPTR wn;
int row;
wn - window handle
row - row at which a line is to be inserted
Row is relative to the origin of the window. All lines below
the row specified are scrolled down. The currently defined
window attribute is used to clear the lines inserted.
RETURNS
TRUE or NULL if error
CAUTIONS
The window "wn" automatically becomes the top window tile upon
return.
9.14. wn_delrow -- delete row from window
USAGE
wn_delrow(wn, row)
WINDOWPTR wn;
int row;
wn - window handle
row - row at which a line is to be deleted
Row is relative to the origin of the window. All lines below
the row specified are scrolled up. The currently defined window
attribute is used to clear the lines inserted.
RETURNS
TRUE or NULL if error
CAUTIONS
The window "wn" automatically becomes the top window tile upon
return.
Page: 26
The Window BOSS
9.15. wn_clr -- clear window
USAGE
wn_clr(wn)
WINDOWPTR wn;
wn - window handle
The window corresponding to wn is cleared (mini clear screen).
The currently defined window attribute is used to clear the
interior of the window.
The windows virtual cursor is homed.
RETURNS
TRUE or NULL if error
CAUTIONS
The window "wn" automatically becomes the top window tile upon
return.
9.16. wn_activate -- activate window
USAGE
wn_activate(wn)
WINDOWPTR wn;
wn - window handle
Activate a previously opened window. The window specified by
"wn" becomes the top window tile.
RETURNS
TRUE or NULL if error
CAUTIONS
None.
Page: 27
The Window BOSS
9.17. wn_color -- set window & border attribute
USAGE
wn_color(wn, atrib, batrib)
WINDOWPTR wn;
unsigned int atrib, batrib;
wn - window handle
atrib - attribute to be used for the window
batrib- attribute to be used for the border
wn_color sets the attribute to be used for all subsequent
operations in the window. The attribute byte contains the
background specific data in the upper 4 bits and the foreground
specific data in the lower 4 bits. Color and bit definitions
can be found in windows.h. You can use a statement of the form:
atrib = (bground << 4 | fground);
to set the attribute to the correct format.
Attributes are defined in windows.h.
RETURNS
Nothing.
CAUTIONS
None.
Page: 28
The Window BOSS
9.18. wn_wrap -- set/clear line wrap flag
USAGE
wn_wrap(wn, flag)
WINDOWPTR wn;
int flag;
wn - window handle
flag - wrap flag (TRUE or FALSE)
Sets the line wrap flag for window functions. If line wrap is
true, output that exceeds the width of a window is
automatically placed on the next line. When the line wrap flag
is false, output that exceeds the width of the window is lost.
RETURNS
Nothing.
CAUTIONS
None.
9.19. wn_sync -- set/clear cursor synchronization flag
USAGE
wn_sync(wn, flag)
WINDOWPTR wn;
int flag;
wn - window handle
flag - synchronization flag (TRUE or FALSE)
When wn_sync is called with a value of TRUE all subsequent text
output to the window will have a flashing (normal) cursor
displayed following the last character output. Calling wn_sync
with a value of false inhibits the cursor from physically
advancing (it is always logically advanced).
RETURNS
Nothing.
CAUTIONS
None.
Page: 29
The Window BOSS
9.20. wn_scroll -- set scrolling method for window
USAGE
wn_scroll(wn,method)
WINDOWPTR wn;
int method;
wn - window handle.
method - BIOS or DMAS
Set the method to be used to scroll the contents of the window
to use either the rom bios (BIOS), or the flicker free DMA
logic. BIOS and DMAS are defined in "windows.h".
The default scrolling mode is DMAS.
The Window BOSS incorporates machine independent logic that
ensures that scrolling on color systems is performed in such a
way as to totally eliminate snow and flicker. This logic,
although bulletproof, can slow scrolling down. Setting the
scrolling method to BIOS provides a machine independent way to
improve the scrolling speed with a (perhaps) proportional
increase in flicker. Keep in mind that recent developments in
CGA and EGA technology have, for the most part, eliminated
scrolling flicker at the hardware level. If your system is
equipped with one of these boards, you may achieve a
noticeable improvement in scrolling speed by using wn_scroll()
to set the scrolling method to BIOS. Additionally, there are
several console device drivers (FANSI and NANSI to mention
two) that "patch" the bios routines to achieve the same
result.
Setting the scrolling method to BIOS when wn_dmaflg=FALSE has
no effect.
RETURNS
Nothing.
CAUTIONS
Color systems only.
Page: 30
The Window BOSS
9.21. wn_dma -- set/clear write ram directly flag
USAGE
wn_dma(flag)
int flag;
flag - write to video ram flag (TRUE or FALSE).
The windowing routines assume that your video card supports
direct access to the video ram (normal for monochrome
monitors).
RETURNS
Nothing.
CAUTIONS
None.
9.22. wn_fixcsr -- update window cursor position
USAGE
wn_fixcsr(wn)
WINDOWPTR wn;
wn - window handle
wn_fixcsr is a companion routine to wn_sync. Causes the
physical cursor to be placed at the logical cursor location.
It is typically called after wn_sync has been called to disable
cursor synchronization. wn_fixcsr does not alter the state of
the windows cursor synchronization flag.
RETURNS
TRUE or NULL if error
CAUTIONS
The window "wn" automatically becomes the top window tile upon
return.
Page: 31
The Window BOSS
9.23. wn_boxset -- set box drawing character set
USAGE
wn_boxset(ul, ur, tb, sd, ll, lr);
int ul, ur, tb, sd, ll, lr;
ul - upper left corner character
ur - upper right corner character
tb - top/bottom line character
sd - left/right side character
ll - lower left corner character
lr - lower right corner character
wn_boxset set the characters to be used to frame all future
windows.
RETURNS
Nothing.
CAUTIONS
None.
9.24. wn_natrib -- set new attribute in window NOW!
USAGE
wn_natrib(wn,atrib)
WINDOWPTR wn;
int atrib;
wn - window handle
atrib - attribute to set the window specified by wn to.
The attributes of the window are changed immediately.
Attributes are defined in window.h
The border is not altered.
RETURNS
TRUE or NULL if error
CAUTIONS
The window "wn" automatically becomes the top window tile upon
return.
Page: 32
The Window BOSS
9.25. wn_dborder -- draw (replace) border on window
USAGE
wn_dborder(wn, ul, ur, tb, sd, ll, lr);
WINDOWPTR wn;
int ul, ur, tb, sd, ll, lr;
wn - window handle
ul - upper left corner character
ur - upper right corner character
tb - top/bottom line character
sd - left/right side character
ll - lower left corner character
lr - lower right corner character
The currently defined border attribute is used when drawing the
border.
RETURNS
TRUE or NULL if error
CAUTIONS
The window "wn" automatically becomes the top window tile upon
return.
Page: 33
The Window BOSS
9.26. _getca -- get character and attribute
USAGE
unsigned int _getca(page, row, col)
int page, row, col;
page - video page #
row - row value (0-24)
col - column value (0-79)
_getca fetches the character and attribute at the screen
coordinates defined by row and column. _getca is a general
purpose routine and can be used outside of the window
environment.
RETURNS
The character and attribute as an unsigned int. The attribute
is in the upper byte, the character is in the lower byte.
CAUTIONS
None.
9.27. _putca -- put character and attribute
USAGE
_putca(page, atch, row, col);
int page, row, col;
unsigned atch;
page - video page #
atch - attribute and character
attribute in high order byte
character in low order byte
row - row position for character (0-24)
col - column position for character (0-79)
_putch is a general purpose routine that can be used outside of
the window environment.
RETURNS
Nothing.
CAUTIONS
None.
Page: 34
The Window BOSS
9.28. _vidblt -- video block transfer
USAGE
_vidblt(sseg, soff, dseg, doff, n);
unsigned sseg, soff, dseg, doff;
int n;
sseg - source segment
soff - source offset
dseg - destination segment
doff - destination offset
n - number of bytes to BLT
_vidblt is similar to the lattice movedata() function except
that it waits for the video retrace signal before performing
the block transfer.
_vidblt is a general purpose function that can be used outside
of the window environment.
RETURNS
Nothing
CAUTIONS
For use in color systems only.
_vidblt references wn_sbit.
9.29. v_spage -- set active display page
USAGE
v_spage(page)
int page;
page - video page to switch the display to
v_spage is a general purpose routine that can be used outside
of the window environment.
RETURNS
Nothing.
CAUTIONS
Color card only.
Page: 35
The Window BOSS
9.30. v_cls -- clear entire video screen
USAGE
v_cls(atrib)
int atrib;
atrib - attribute to be used
v_cls clears the entire video screen to the specified attribute
and places the cursor in the upper left hand corner of the
screen.
v_cls is a general purpose routine that can be used outside of
the window environment.
Attributes are defined in windows.h.
RETURNS
Nothing.
CAUTIONS
None.
9.31. v_smode -- set video mode
USAGE
v_smode(mode)
int mode;
mode - mode to set the display to
v_smode is a general purpose routine which can be used outside
of the window environment.
Modes are defined in windows.h.
RETURNS
Nothing.
CAUTIONS
None.
Page: 36
The Window BOSS
9.32. v_wca -- write character and attribute
USAGE
v_wca(page, char, atrib, count);
int page, char, atrib, count;
page - video page #
char - character to write
atrib - attribute to use
count - number of times two repeat
v_wca writes the character defined by char count times starting
at the current cursor location.
v_wca is a general purpose routine that can be used outside of
the window environment.
Attributes are defined in windows.h.
RETURNS
Nothing.
CAUTIONS
None.
9.33. v_wtty -- write character TTY mode
USAGE
v_wtty(char);
int char;
char - character to write
v_wtty writes the character defined by char at the current cursor
location.
v_wtty is a general purpose routine that can be used outside of
the window environment.
RETURNS
Nothing.
CAUTIONS
None.
Page: 37
The Window BOSS
9.34. v_locate -- locate (position) cursor
USAGE
v_locate(page, row, col);
int page, row, col;
page - video page #
row - row to position to
col - column to position to
v_locate positions the cursor to the absolute coordinates
specified by row and col on the specified page. The upper left
hand corner of the screen is (0,0).
v_locate is a general purpose routine that can be used outside
of the window environment.
Row and Col are range checked. You CAN position the cursor
slightly (25,80) off the screen.
RETURNS
Nothing.
CAUTIONS
None.
9.35. v_hidec -- hide cursor
USAGE
v_hidec();
The physical cursor is located off the screen.
This function does not affect any virtual cursor coordinates,
it simply hides the physical cursor from view.
RETURNS
Nothing.
CAUTIONS
None.
Page: 38
The Window BOSS
9.36. v_sctype -- set cursor type (style)
USAGE
v_sctype(type, start, end);
int type, start, end;
type - cursor style code (0=hidden, 1=normal, 2=slow, 3=fast)
start - start scan line
end - end scan line
As an example, to set a slow flashing block style cursor invoke
this function with type=1, start=6, and end=12 (color card).
RETURNS
Nothing.
CAUTIONS
Color and Monochrome adapters only.
Not for use on the 3270 PC or Enhanced Graphics Adapters.
9.37. v_sapu -- scroll active display page up
USAGE
v_sapu(nl, rul, cul, rlr, clr, atrib);
int nl, rul, cul, rlr, clr, atrib;
nl - number of lines to scroll
rul - row of upper left hand corner of scroll area
cul - column of upper left hand corner of scroll area
rlr - row of lower right corner of scroll area
clr - column of lower right corner of scroll area
atrib - attribute to be used for blanking
A value of 0 for nl scrolls (blanks) the entire area. To clear
the entire video screen use v_sapu(0, 0, 0, 24, 79, NORMAL).
v_sapu is a general purpose routine that can be used outside of
the window environment.
Attributes are defined in windows.h.
RETURNS
Nothing.
CAUTIONS
None.
Page: 39
The Window BOSS
9.38. v_sapd -- scroll active display page down
USAGE
v_sapd(nl, rul, cul, rlr, clr, atrib);
int nl, rul, cul, rlr, clr, atrib;
nl - number of lines to scroll
rul - row of upper left hand corner of scroll area
cul - column of upper left hand corner of scroll area
rlr - row of lower right corner of scroll area
clr - column of lower right corner of scroll area
atrib - attribute to be used for blanking
v_sapd is a general purpose routine that can be used outside of
the window environment.
A value of 0 for nl scrolls (blanks) the entire area. To clear
the entire video screen use v_sapd(0, 0, 0, 24, 79, NORMAL).
Attributes are defined in windows.h.
RETURNS
Nothing.
CAUTIONS
None.
9.39. v_rcpos -- return current cursor position
USAGE
v_rcpos(page, row, col);
int page;
int *row, *col; /* POINTERS */
int page - video page #
int *row - pointer to int to receive row value
int *col - pointer to int to receive column value
v_rcpos is a general purpose routine that can be used outside
of the window environment.
RETURNS
Nothing.
CAUTIONS
None.
Page: 40
The Window BOSS
9.40. v_rcvs -- return current video state
USAGE
v_rcvs(page, vm, cols);
int *page, *vm, *cols; /* POINTERS */
int *page - pointer to int to receive current video page #
int *vm - pointer to int to receive current video mode
int *cols - pointer to int to receive current screen width
v_rcvs is a general purpose routine that can be used outside of
the window environment.
Modes are defined in windows.h.
RETURNS
Nothing.
CAUTIONS
None.
9.41. v_getch -- get keyboard character and scan code
USAGE
v_getch();
v_getch is a general purpose routine that can be used outside
of the window environment.
RETURNS
The character and scan code. The character is in the low order
byte, the scan code in the high order byte.
CAUTIONS
v_getch waits for a key to be struck.
Page: 41
The Window BOSS
9.42. v_kstat -- get keyboard status
USAGE
v_kstat();
v_kstat is a general purpose routine that can be used outside
of the window environment.
RETURNS
TRUE if a character is available, FALSE if not.
CAUTIONS
None.
9.43. v_kflush -- flush keyboard buffer
USAGE
v_kflush();
v_kflush clears the keyboard buffer of any pending input.
RETURNS
Nothing.
CAUTIONS
None.
9.44. v_border -- set border color
USAGE
v_border(color)
int color;
Set overscan border to specified color.
RETURNS
Nothing.
CAUTIONS
None.
Page: 42
The Window BOSS
10. Registration Form
The Window BOSS Registration and Feedback Form
Name________________________________________________
Company_____________________________________________
Address_____________________________________________
City, State, Zip____________________________________
Daytime telephone___________________________________
Compiler & Version__________________________________
To register, send $50.00 (money order, personal check, call for
COD - Connecticut State residents add 7.5% sales tax) to:
Star Guidance Consulting
273 Windy Drive
Waterbury, Connecticut 06705
(203) 574-2449
Likes, dislikes, features wanted, problems? List below:
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
Page: 43
The Window BOSS
V
v_border, 42
v_cls, 36
v_getch, 41
v_hidec, 38
v_kflush, 42
v_kstat, 42
v_locate, 38
v_rcpos, 40
v_rcvs, 41
v_sapd, 40
v_sapu, 39
v_sctype, 39
v_smode, 36
v_spage, 35
v_wca, 37
v_wtty, 37
W
wn_activate, 27
wn_boxset, 32
wn_close, 19
wn_clr, 27
wn_color, 28
wn_dborder, 33
wn_delrow, 26
wn_dma, 31
wn_fixcsr, 31
wn_gets, 24
wn_insrow, 26
wn_locate, 21
wn_move, 20
wn_natrib, 32
wn_open, 17
wn_printf, 22
wn_puts, 23
wn_putsa, 25
wn_restore, 20
wn_save, 19
wn_scroll, 30
wn_sync, 29
wn_titla, 18
wn_title, 18
wn_wrap, 29
_
_getca, 34
_putca, 34
_vidblt, 35
Page: 44